﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FlowerPower
{
    public partial class frmFroeType : Form
    {
        // For at kunne følge med i om brugeren ændrer værdierne (i.f.m. redigering af en eksisterende froetype) 
        // gemmer vi værdierne længere nede i programmet (men definerer dem her for at de er tilgængelige for alle dele af denne Windowsform)
        string originalVaerdiForFroeTypeNavn = null;
        string originalVaerdiForFroeTypeBeskrivelse = null;
        string originalVaerdiForFroeTypensVareGruppe = null;

        public frmFroeType()
        {
            InitializeComponent();

            DBcontroller db = new DBcontroller();
            List<Varegruppe> varegrupper = new List<Varegruppe>();
            varegrupper = db.IndlaesVaregrupper();
            foreach (Varegruppe item in varegrupper)
            {
                cboVareGruppe.Items.Add(item.Navn);
                cboNyFroeTypesVareGruppe.Items.Add(item.Navn);
            }
            
        }

        private void indlaesFroeTyper(string varegruppe, string soegeord = "")
        {
            lvFroeTyper.Items.Clear();
            DBcontroller db = new DBcontroller();
            List<Froetype> froetyper = new List<Froetype>();
            

            if (soegeord == "")
            {
                froetyper = db.IndlaesFroetyper(varegruppe);
                foreach (Froetype item in froetyper)
                {
                    string[] froetype = { item.Navn, item.Beskrivelse};
                    ListViewItem lvItem = new ListViewItem(froetype);
                    lvFroeTyper.Items.Add(lvItem);
                }
            }
            else if (soegeord != "")
            {
            }

        }


        private void lvFroeTyper_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnSletValgtFroeType.Enabled = true;
            txtValgtFroeTypesNavn.Text = lvFroeTyper.FocusedItem.SubItems[0].Text;
            txtValgtFroeTypesBeskrivelse.Text = lvFroeTyper.FocusedItem.SubItems[1].Text;
            // Gem de oprindelige værdier så vi kan følge med i om der er blevet foretaget ændringer
            originalVaerdiForFroeTypeNavn = txtValgtFroeTypesNavn.Text;
            originalVaerdiForFroeTypeBeskrivelse = txtValgtFroeTypesBeskrivelse.Text;
            originalVaerdiForFroeTypensVareGruppe = cboVareGruppe.SelectedItem.ToString();



            cboValgtFroeTypesVareGruppe.Items.Clear();
            for (int i = 0; i < cboVareGruppe.Items.Count; i++) {
                cboValgtFroeTypesVareGruppe.Items.Add(cboVareGruppe.Items[i]);
            }
            // Sør for at sætte værdien på redigerings varegruppe combo boxen fra "Rediger valgt frøtype" til det samme som frøtypens varegruppe
            // denne kan hentes v.h.a. varegruppe combo boxen da den har den korrekte værdi
            cboValgtFroeTypesVareGruppe.SelectedIndex = cboVareGruppe.FindString(cboVareGruppe.SelectedItem.ToString());

            gboRedigerValgtFroeType.Enabled = true;
            btnGemAendringerAfValgtFroeType.Enabled = false;
        }

        private void slaaMulighedForSletningAfRedigereFroeTypeFra(object sender, EventArgs e)
        {
            // Formålet er her at undgå forvirring når man efter at have valgt en frøtype fra listviewet
            // klikker i et af felterne hvor man kan redigere værdiene for den valgte frøtype
            // Når man gør det er den valgte frøtype ikke længere markeret i listviewet og der kan
            // derfor opstå uklarhed om hvad det er man sletter (idet slet knappen er ved siden af listviewet)
            btnSletValgtFroeType.Enabled = false;
        }



        private void reagerPaaAendringAfValgtFroeTypeData(object sender, EventArgs e)
        {
            if ((txtValgtFroeTypesNavn.Text != originalVaerdiForFroeTypeNavn) || (txtValgtFroeTypesBeskrivelse.Text != originalVaerdiForFroeTypeBeskrivelse) || (cboValgtFroeTypesVareGruppe.SelectedItem.ToString() != originalVaerdiForFroeTypensVareGruppe))
            {
                btnGemAendringerAfValgtFroeType.Enabled = true;
            }
            else if ((txtValgtFroeTypesNavn.Text == originalVaerdiForFroeTypeNavn) && (txtValgtFroeTypesBeskrivelse.Text == originalVaerdiForFroeTypeBeskrivelse) && (cboValgtFroeTypesVareGruppe.SelectedItem.ToString() == originalVaerdiForFroeTypensVareGruppe))
            {
                btnGemAendringerAfValgtFroeType.Enabled = false;
                btnSletValgtFroeType.Enabled = true;
            }
   
        }

        private void cboVareGruppe_SelectedIndexChanged(object sender, EventArgs e)
        {
            indlaesFroeTyper(cboVareGruppe.SelectedItem.ToString());
        }

        private void btnAnnullerOprettelseAfNyFroetype_Click(object sender, EventArgs e)
        {
            txtNyFroeTypesNavn.Text = "";
            txtNyFroeTypesBeskrivelse.Text = "";

            // Reset combo boxen
            //cboNyFroeTypesVareGruppe.Items.Clear();
            cboNyFroeTypesVareGruppe.Text = "";
            /*
            DBcontroller db = new DBcontroller();
            List<Varegruppe> varegrupper = new List<Varegruppe>();
            varegrupper = db.IndlaesVaregrupper();
            foreach (Varegruppe item in varegrupper)
            {
                cboNyFroeTypesVareGruppe.Items.Add(item.Navn);
            }
             */
        }

        private void btnGemNyFroeType_Click(object sender, EventArgs e)
        {
            DBcontroller db = new DBcontroller();
            db.OpretFroetype(txtNyFroeTypesNavn.Text, txtNyFroeTypesBeskrivelse.Text, cboNyFroeTypesVareGruppe.SelectedItem.ToString());
            cboVareGruppe.Text = cboNyFroeTypesVareGruppe.SelectedItem.ToString();
            indlaesFroeTyper(cboVareGruppe.Text);

            // Nulstil værdierne for nyindtastning af Frøtype
            txtNyFroeTypesNavn.Text = "";
            txtNyFroeTypesBeskrivelse.Text = "";
            cboNyFroeTypesVareGruppe.Text = "";

        }

        private void btnTilbageTilVareVareGruppeFroeTypeMenu_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnGemAendringerAfValgtFroeType_Click(object sender, EventArgs e)
        {
            DBcontroller db = new DBcontroller();
            db.RetFroetype(originalVaerdiForFroeTypeNavn, originalVaerdiForFroeTypeBeskrivelse, originalVaerdiForFroeTypensVareGruppe, txtValgtFroeTypesNavn.Text, txtValgtFroeTypesBeskrivelse.Text, cboValgtFroeTypesVareGruppe.SelectedItem.ToString());
            
            cboVareGruppe.Text = cboValgtFroeTypesVareGruppe.Text;
            indlaesFroeTyper(cboVareGruppe.Text);
            txtValgtFroeTypesNavn.Text = "";
            txtValgtFroeTypesBeskrivelse.Text = "";
            cboValgtFroeTypesVareGruppe.Text = "";

        }

        private void btnSletValgtFroeType_Click(object sender, EventArgs e)
        {
            string valgtFroetypesNavn = lvFroeTyper.FocusedItem.SubItems[0].Text;
            DBcontroller db = new DBcontroller();
            
            int antalVarerMedDetValgteFroetypeNavn = db.FindAntalVarerTilknyttetFroetype(valgtFroetypesNavn);

            if (antalVarerMedDetValgteFroetypeNavn > 0) {
                MessageBox.Show("Kan ikke slette frøtypen \"" + valgtFroetypesNavn + "\" da der er " + antalVarerMedDetValgteFroetypeNavn + " varer tildelt frøtypen");
            }
            else if (antalVarerMedDetValgteFroetypeNavn == 0)
            {
                db.SletFroetype(valgtFroetypesNavn);
                indlaesFroeTyper(cboVareGruppe.SelectedItem.ToString());
                btnSletValgtFroeType.Enabled = false;
                txtValgtFroeTypesNavn.Text = "";
                txtValgtFroeTypesBeskrivelse.Text = "";
                cboValgtFroeTypesVareGruppe.Text = "";
                gboRedigerValgtFroeType.Enabled = false;
            }

        }

       
    }
}
